In a typical communication system, forward error correction (FEC) is often applied in order to improve robustness of the system against a wide range of impairments of the communication channel.
Referring to FIG. 1, in which a typical communication network channel is depicted having an information source 101, sending data to a source coder 102 that in turn forwards the data to a channel encoder 103. The encoded data is then modulated by modulator 104 onto a carrier before being transmitted over a channel 105. After transmission, a like series of operations takes place at the receiver using a demodulator 106, channel decoder 107 and source decoder 108 to produce data suitable for the information sink 109. FEC is applied by encoding the information data stream at the transmit side at the encoder 103, and performing the inverse decoding operation on the receive side at the decoder 107. Encoding usually involves generation of redundant (parity) bits that allow more reliable reconstruction of the information bits at the receiver.
In many modern communication systems, FEC uses Low Density Parity Check (LDPC) codes that are applied to a block of information data of the finite length.
One way to represent LDPC codes is by using so-called Tanner graphs, in which N symbol nodes (also called variable nodes or bit nodes), correspond to bits of the codeword, and M check nodes (also called function nodes), correspond to the set of parity-check constraints which define the code. Edges in the graph connect symbol nodes to check nodes.
LDPC codes can also be specified by a parity check matrix H of size M×N. In the matrix H, each column corresponds to one of the symbol nodes while each row corresponds to one of the check nodes. This matrix defines an LDPC block code (N, K), where K is the information block size, N is the length of the codeword, and M is the number of parity check bits. M=N−K. A general characteristic of the LDPC parity check matrix is the low density of non-zero elements that allows utilization of efficient decoding algorithms. The structure of the LDPC code parity check matrix is first outlined in the context of existing hardware architectures that can exploit the properties of these parity check matrices.
One problem when using LDPC codes is a necessity to properly adjust the encoding procedure due to variable payload size and due to variable underlying transmission mechanism. Such encoding procedure typically assumes usage of shortening and puncturing techniques.
Furthermore, there may be a plurality of LDPC codes with different codeword lengths and code rates available. The number of the possible combinations may present a challenge to select the appropriate LDCP code to provide a suitable coding gain, and at the same time minimize the number of encoded packets, codewords and modulated symbols